Projet Machine Learning avec Python :

Prédiction des incidents à San Francisco

ALLARD Lucas, HEDFI Houeida et MEFENZA NOUNTU Thierry

Partie 1 : Opérations préliminaires sur la base et visualisation des données

Packages

1. Opérations préliminaires sur la base de données

1.1. Lecture du CSV

1.2. Suppression des colonnes inutiles

Toutes les colonnes suivantes ne sont pas utiles pour notre objectif de prédire le nombre d'appels qui aura lieu à une heure et un quartier précis

1.3. Transformation du format des dates en datetime + extraction de l'année, mois, jour, heure, minute et du jour de semaine

Nous trions par date exacte à laquelle nous recevons chaque appel

1.4. Suppressions de tous les doublons : c'est à dire les appels à quelques minutes d'intervalle pour un même incident

En effet, plusieurs appels peuvent avoir lieu pour un même incident à quelques minutes d'intervalles, ainsi nous prenons le soin de supprimer tous les appels qui ont lieu dans le même quartier, dans la même tranche horaire et pour le même type d'incident en suppoant que c'est des doublons

1.5. On ne conserve uniquement les appels à partir du 1er janvier 2012 ainsi que les appels où toutes les données sont renseignées

Beaucoup de données sont manquantes avant le 1er janvier 2012. Ainsi nous restreignons notre base de données du 1er janvier 2012 minuit au 31 décembre 2020 23h59. Nous verrons par la suite que pour l'utilisation de modèle de Machine Learning cette base est relativement conséquente et nous restreindrons à quelques années.

1.6. Création d'une variable pour la catégorie des appels qui est un mélange entre la variable "Call Type" (très détaillé) et la variable "Call Type Group" (peu détaillé)

Nous avons 2 variables qui catégorisent les incidents: -"Call Type" qui recense énormément de types différents d'appels (+ de 30) -"Call Type Group" qui est plus concis avec seulement 4 variables (mais des données manquantes) Nous avons donc reconstitué notre propre variable "Call Category" qui est composé de seulement 6 types d'appels: -"Medical Non Life-Threatening" -"Medical Potentially Life-Threatening" -"Fire" -"Alarms" -"Other" -"Incidents"

1.7. Suppression des colonnes qui ne servent plus

1.8. Suppressions de tous les appels pour lesquels il manque au moins une donnée

2.1. Visualisation des données temporelles

Nombre d'appels par catégorie

Lineplot de la catégorie Medical Non Life-Threatening par mois (par étapes)

Lineplot de la catégorie Medical Potentially Life-Threatening par mois

Lineplots de chaque Call Category par année

Lineplots de chaque Call Category par mois

Lineplots de chaque Call Category par jour du mois

Barplots de chaque Call Category par jour du mois

Barplots de chaque Call Category par jour de la semaine

Lineplots de chaque Call Category par heure

Barplots de chaque Call Category par heure

Barplots des appels par mois et pour chaque année

2.2. Visualisation des données géographiques

Nombre d'appels par quartier

Nombre d'appels par catégorie à Tenderloin (le quartier où il y a le plus d'appels)

Nombre d'appels par catégorie à Lincoln Park (le quartier où il y a le moins d'appels)

Visualisation des données par des cartes géographiques

Visaluation des nombres d'appels par quartier de San Francisco

Visaluation des nombre d'appels de la catégorie Fire

Visaluation des nombre d'appels de la catégorie Other

Visaluation des nombre d'appels de la catégorie Medical Non Life-Threatening

Visaluation des nombre d'appels de la catégorie Medical Potentially Life-Threatening

Visaluation des nombre d'appels de la catégorie Incidents

Visaluation des nombre d'appels de la catégorie Alarms